

#ifndef __WORLD
#  define __WORLD

#  include "vector.h"
#  include "matrix.h"
#  include "camera.h"

typedef struct vm_world {

  vm_camera *cam;                   /* The camera for the world.             */
  vm_vector screen_space_basis[3];  /* Screen space basis vectors.           */
  vm_matrix *space_trans;           /* Translates from cam to screen space.  */
  vm_vector *vects;                 /* Vectors to render with the given cam. */

  /* Some precalculated data for use in certain functions.                   */
  double t_num;
  double t_den;

} vm_world;

#endif


vm_world *vm_make_empty_world();
void      vm_free_world(vm_world *);

void      vm_pregenerate(vm_world *, vm_camera *);
void      vm_print_world_data(vm_world *);
